package com.jt.controller;


import com.jt.pojo.Item;
import com.jt.pojo.ItemDesc;
import com.jt.vo.EasyUITable;
import com.jt.vo.SysResult;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import com.jt.service.ItemService;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.List;


@RestController//表示返回的都是JSON
@RequestMapping("/item")
public class ItemController {
	
	@Autowired
	private ItemService itemService;
//	@RequestMapping("/testVo")
//	@ResponseBody
//	public EasyUITable testVo(){
//		Item item = new Item();
//		item.setId(1000L).setTitle("饮水机").setPrice(200L);
//		List<Item> list = new ArrayList<>();
//		list.add(item);
//		return new EasyUITable(2000L,list);
//	}
	/*业务：分页查询商品信息
	* url
	* 参数：page=1页数&rows=20行数
	*返回值：EasyUITable */
	@RequestMapping("/query")
	public EasyUITable findItemByPage(int page,int rows){
		return itemService.findItemByPage(page,rows);
	}
	/**
	 * 商品的新增操作
	 * url:item/save
	 * 参数:整个表单进行提交 使用对象接受
	 * 返回值:系统返回值对象
	 */
	@RequestMapping("/save")
	public SysResult saveItem(Item item, ItemDesc itemDesc) {
//		try {
//			itemService.saveItem(item);
//			return SysResult.success();
//		}catch (Exception e){
//			e.printStackTrace();
//			return SysResult.fail();
//		}
		itemService.saveItem(item,itemDesc);
		return SysResult.success();
	}
	/*
	实现商品编辑
	url:item/update
	请求参数：整个form表单提交
	返回值：sysResult对象
	 */
	@RequestMapping("/update")
	public SysResult updateItem(Item item,ItemDesc itemDesc){
		itemService.updateItem(item,itemDesc);
		return SysResult.success();
	}
	/**
	 * 需求:实现商品删除操作
	 * url://localhost:8091/item/delete
	 * 请求参数：ids:1475147
	 * 返回值:SysResult对象
	 *
	 * 知识拓展：
	 * 问题：页面中<input name="id	value="100>
	 *   	参数如何接受的，底层实现是是什么？servlet是否熟悉
	 *   	利用servlet中的response对象/request进行参数一致
	 *   注意事项，方法中的参数名称，必须与页面中的name属性名称一致
	 *
	 */
	@RequestMapping("/delete")
	public SysResult deleteItem(Long[] ids){
		itemService.deleteItem(ids);
		return SysResult.success();
	}
	/**
	 *利用restful风格
	 * 上架操作：start:1，下架为start:2
	 * 业务需求:实现商品上架
	 * url:/item/updateStatus/1上架
	 * url:/item/updateStatus/2下架
	 * 返回值：SysResult
	 *
	 * springMVC框架：参数接收说明 如果参数中间以逗号的形式分割，则可以自动的转化为数组类型
	 *
	 */
	@RequestMapping("/updateStatus/{status}")
	public SysResult updateStatus(@PathVariable Integer status,Long[] ids){
		itemService.updateStatus(ids,status);
		return SysResult.success();
	}
	/*
	根据商品号，解锁商品的详情信息

	 */
	@RequestMapping("/query/item/desc/{itemId}")
	public SysResult findItemDescById(@PathVariable Long itemId){
		ItemDesc itemDesc = itemService.findItemDescById(itemId);
		return SysResult.success(itemDesc);
	}
}
